<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /* 先请求A 再请求B 再请求C 练习*/
    
    function getUser() {
      return new Promise((resolve, reject) => {
        console.log("A开始请求")
        try {
          // throw new Error("A错误")
          setTimeout(() => {
            console.log("A成功");
            const user = {
              username: "niuma"
            }
            resolve(user)
          }, 2000)
        } catch (e) {
          reject(e.message)
        }
      });
    }

    function getSex(user) {
      return new Promise((resolve, reject) => {
        console.log("B开始")
        try {
          // throw new Error("B错误")
          setTimeout(() => {
            console.log("B成功");
            const sex = {
              sex: "男"
            }
            resolve({
              ...user,
              ...sex
            })
          }, 2000)
        } catch (e) {
          reject(e.message)
        }
      });
    }

    function getAge(sex) {
      return new Promise((resolve, reject) => {
        console.log("C开始")
        try {
          // throw new Error("C错误")
          setTimeout(() => {
            console.log("C成功");
            const age = {
              age: 18
            }
            resolve({
              ...sex,
              ...age
            })
          }, 2000)
        } catch (e) {
          reject(e.message)
        }
      });
    }
    async function getData() {
      const user = await getUser();
      const sex = await getSex(user);
      const age = await getAge(sex);
      console.log("完整的数据是", age);

    }
    getData()

    // function getUser() {
    //   return new Promise((resolve, reject) => {
    //     console.log("A数据开始请求....")
    //     try {
    //       // throw new Error("A错误")
    //       setTimeout(() => {
    //         console.log("A数据请求成功");
    //         const user = {
    //           username: "laoliu"
    //         }
    //         resolve(user)
    //       }, 2000)
    //     } catch (e) {
    //       reject(e.message)
    //     }
    //   });
    // }

    // function getSex(user) {
    //   return new Promise((resolve, reject) => {
    //     console.log("B数据开始请求....")
    //     try {
    //       // throw new Error("B错误")
    //       setTimeout(() => {
    //         console.log("B数据请求成功");
    //         const sex = {
    //           sex: "男"
    //         }
    //         resolve({
    //           ...user,
    //           ...sex
    //         })
    //       }, 2000)
    //     } catch (e) {
    //       reject(e.message)
    //     }
    //   });
    // }

    // function getAge(sex) {
    //   return new Promise((resolve, reject) => {
    //     console.log("C数据开始请求....")
    //     try {
    //       // throw new Error("C错误")
    //       setTimeout(() => {
    //         console.log("C数据请求成功");
    //         const age = {
    //           age: 18
    //         }
    //         resolve({
    //           ...sex,
    //           ...age
    //         })
    //       }, 2000)
    //     } catch (e) {
    //       reject(e.message)
    //     }
    //   });
    // }


    // async function getData() {
    //   const user = await getUser();

    //   const sex = await getSex(user);

    //   const age = await getAge(sex);

    //   //最后异步的操作 我们可以不用await 也会最后执行
    //   console.log("完整的数据是", age);

    // }


    // getData()
  </script>
</body>

</html>